content_scripts

Typ Array
Verpflichtend Nein
Manifest-Version 2 oder höher
Beispiel
json
"content_scripts": [
  {
    "matches": ["*://*.mozilla.org/*"],
    "js": ["borderify.js"]
  }
]

Weist den Browser an, content scripts in Webseiten zu laden, deren URL einem Muster entspricht.

Dieser Schlüssel ist ein Array. Jedes Element ist ein Objekt, das:

  • muss einen Schlüssel namens matches enthalten, der die URL-Muster angibt, die für die zu ladenden Skripte übereinstimmen sollen;
  • kann Schlüssel namens js und css enthalten, die Skripte und Stylesheets auflisten, die in übereinstimmenden Seiten geladen werden sollen; und
  • kann eine Reihe anderer Eigenschaften enthalten, die Aspekte steuern, wie und wann Content-Skripte geladen werden.

Diese Tabelle zeigt alle Schlüssel, die Sie einfügen können.

Name Typ Beschreibung
all_frames Boolean
true

In die Skripte, die in js und css angegeben sind, in alle Frames injizieren, die die angegebenen URL-Anforderungen erfüllen, selbst wenn der Frame nicht das oberste Frame in einem Tab ist. Dies injiziert nicht in untergeordnete Frames, bei denen nur ihr Elternframe die URL-Anforderungen erfüllt und der untergeordnete Frame nicht. Die URL-Anforderungen werden für jeden Frame unabhängig geprüft.

Hinweis: Dies gilt auch für Tracker oder Ads, die iframes nutzen, was bedeutet, dass die Aktivierung dieser Option dazu führen könnte, dass Ihr Content-Skript auf einigen Seiten Dutzende Mal aufgerufen wird.

false
Nur in Frames injizieren, die die URL-Anforderungen erfüllen und die obersten Frames in einem Tab sind.

Standardwert ist false.

css Array

Ein Array von Pfaden, relativ zu manifest.json, die CSS-Dateien referenzieren, die in übereinstimmende Seiten injiziert werden. Weitere Informationen zur Reihenfolge, in der Dateien injiziert werden, finden Sie unter Ladereihenfolge.

Hinweis: Firefox löst URLs in injizierten CSS-Dateien relativ zur CSS-Datei selbst auf, und nicht zur Seite, in die sie injiziert werden.

exclude_globs Array Ein Array von Zeichenfolgen, die Wildcards enthalten. Siehe Übereinstimmung von URL-Mustern unten.
exclude_matches Array Ein Array von Match-Mustern. Siehe Übereinstimmung von URL-Mustern unten.
include_globs Array Ein Array von Zeichenfolgen, die Wildcards enthalten. Siehe Übereinstimmung von URL-Mustern unten.
js Array

Ein Array von Pfaden, relativ zu manifest.json, die JavaScript-Dateien referenzieren, die in übereinstimmende Seiten injiziert werden. Weitere Informationen zur Reihenfolge, in der Dateien injiziert werden, finden Sie unter Ladereihenfolge.

match_about_blank Boolean

Die Content-Skripte in Seiten einfügen, deren URL "about:blank" oder "about:srcdoc" ist, wenn die URL der Seite, die diese Seite geöffnet oder erstellt hat, den Mustern entspricht, die im Rest des content_scripts-Schlüssels angegeben sind.

Dies ist besonders nützlich, um Skripte in leere iframes auszuführen, deren URL "about:blank" ist. Dazu sollten Sie auch den all_frames-Schlüssel setzen.

Beispiel: Angenommen, Sie haben einen content_scripts-Schlüssel wie diesen:

json
  "content_scripts": [
    {
      "js": ["my-script.js"],
      "matches": ["https://example.org/"],
      "match_about_blank": true,
      "all_frames": true
    }
  ]

Wenn der Benutzer https://example.org/ lädt und diese Seite ein leeres iframe einbettet, dann wird "my-script.js" in das iframe geladen.

Hinweis: match_about_blank wird in Firefox ab Version 52 unterstützt.

Beachten Sie, dass in Firefox Content-Skripte nicht in leere iframes bei "document_start" injiziert werden, selbst wenn Sie diesen Wert in run_at angeben.

match_origin_as_fallback Boolean Wenn true, wird Code in about:, data: und blob: Seiten injiziert, wenn ihr Ursprung dem Muster in matches entspricht, selbst wenn der Dokumentenursprung undurchsichtig ist (aufgrund der Verwendung von CSP oder iframe-Sandbox). Die Match-Muster in matches müssen ein Wildcard-Pfad-Glob angeben. Standardwert ist false.
matches Array

Ein Array von Match-Mustern. Siehe Übereinstimmung von URL-Mustern unten.

Dies ist der einzige verpflichtende Schlüssel.

run_at String

Diese Option bestimmt, wann die in css und js angegebenen Dateien injiziert werden. Sie können hier einen von drei Strings angeben, wobei jeder einen Zustand im Prozess des Ladens eines Dokuments identifiziert. Die Zustände entsprechen direkt dem [`Document.readyState`](/de/docs/Web/API/Document/readyState):

"document_start"
Entspricht loading. Das DOM wird noch geladen.
"document_end"
Entspricht interactive. Das DOM ist fertig geladen, aber Ressourcen wie Skripte und Bilder können noch geladen werden.
"document_idle"
Entspricht complete. Das Dokument und alle seine Ressourcen sind geladen.

Der Standardwert ist "document_idle".

In allen Fällen werden Dateien in js nach den Dateien in css injiziert.

world String

Die JavaScript-Welt, in der das Skript ausgeführt wird.

"ISOLATED"
Die Standardausführungsumgebung für Content-Skripte. Diese Umgebung ist vom Kontext der Seite isoliert: Während sie dasselbe Dokument teilen, unterscheiden sich die globalen Bereiche und verfügbaren APIs.
"MAIN"
Die Ausführungsumgebung der Webseite. Diese Umgebung wird mit der Webseite ohne Isolation geteilt. Skripte in dieser Umgebung haben keinen Zugriff auf die APIs, die nur für Content-Skripte verfügbar sind.

Warnung: Aufgrund des Mangels an Isolation kann die Webseite den ausgeführten Code erkennen und beeinträchtigen. Verwenden Sie die MAIN-Welt nur, wenn es akzeptabel ist, dass Webseiten die Logik oder Daten, die durch den ausgeführten Code fließen, lesen, darauf zugreifen oder diese ändern können.

Der Standardwert ist "ISOLATED".

Ladereihenfolge

Registrierte Objekte in content_scripts werden zu der von run_at angegebenen Zeit in übereinstimmende Webseiten injiziert (zuerst document_start, dann document_end und schließlich document_idle):

  • In der im content_scripts-Array angegebenen Reihenfolge, für jedes Objekt mit einem passenden run_at-Wert, dann:
    • CSS wird in der Reihenfolge angewendet, die in seinem css-Array angegeben ist.
    • JavaScript-Code wird in der Reihenfolge ausgeführt, die in seinem js-Array angegeben ist.

Zum Beispiel, in dieser Schlüssel-Spezifikation:

json
"content_scripts": [
    {
    "matches": ["*://*.mozilla.org/*"],
    "js": ["jquery.js", "my-content-script.js"],
    "run_at": "document_idle"
  },
  {
    "matches": ["*://*.mozilla.org/*"],
    "css": ["my-css.css"],
    "js": ["another-content-script.js", "yet-another-content-script.js"],
    "run_at": "document_idle"
  },
  {
    "matches": ["*://*.mozilla.org/*"],
    "js": ["run-first.js"],
    "run_at": "document_start"
  }
]

Die Dateien werden so geladen, wenn eine mozilla.org-Domain geöffnet wird:

  • "run-first.js" - weil es angefordert wird, bei "document_start" ausgeführt zu werden.
  • "jquery.js" - weil es im ersten Array angefordert wird, bei "document_idle" ausgeführt zu werden.
  • "my-content-script.js" - weil es das zweite Element im ersten Array ist, das bei "document_idle" ausgeführt werden soll.
  • "my-css.css" - weil das CSS eines Objekts vor seinem JavaScript geladen wird.
  • "another-content-script.js" - weil es das erste Element in der js-Eigenschaft ist.
  • "yet-another-content-script.js"

Übereinstimmung von URL-Mustern

Der "content_scripts"-Schlüssel hängt Content-Skripte an Dokumente basierend auf der URL-Übereinstimmung an: Wenn die URL des Dokuments der im Schlüssel angegebenen Spezifikation entspricht, wird das Skript angehängt. Es gibt vier Eigenschaften innerhalb von "content_scripts", die Sie für diese Spezifikation verwenden können:

matches

ein Array von Match-Mustern

exclude_matches

ein Array von Match-Mustern

include_globs

ein Array von globs

exclude_globs

ein Array von globs

Um eine dieser Eigenschaften abzugleichen, muss eine URL mindestens eines der Elemente in ihrem Array erfüllen. Beispiel: Angenommen, eine Eigenschaft sieht so aus:

json
"matches": ["*://*.example.org/*", "*://*.example.com/*"]

Sowohl http://example.org/ als auch http://example.com/ werden übereinstimmen.

Da matches der einzige verpflichtende Schlüssel ist, werden die anderen drei Schlüssel verwendet, um die URLs weiter einzuschränken, die übereinstimmen. Um dem Schlüssel insgesamt zu entsprechen, muss eine URL:

  • mit der matches-Eigenschaft übereinstimmen
  • UND mit der include_globs-Eigenschaft übereinstimmen, falls vorhanden
  • UND NICHT mit der exclude_matches-Eigenschaft übereinstimmen, falls vorhanden
  • UND NICHT mit der exclude_globs-Eigenschaft übereinstimmen, falls vorhanden

globs

Ein Glob ist einfach eine Zeichenfolge, die Wildcards enthalten kann.

Es gibt zwei Arten von Wildcards, und Sie können sie im selben Glob kombinieren:

  1. * entspricht null oder mehr Zeichen
  2. ? entspricht genau einem Zeichen.

Zum Beispiel: "*na?i" würde "illuminati" und "annunaki", aber nicht "sagnarelli" entsprechen.

Beispiel

json
"content_scripts": [
  {
    "matches": ["*://*.mozilla.org/*"],
    "js": ["borderify.js"]
  }
]

Dies injiziert ein einziges Content-Skript borderify.js in alle Seiten unter mozilla.org oder einem seiner Subdomains, egal ob über HTTP oder HTTPS bereitgestellt.

json
  "content_scripts": [
    {
      "exclude_matches": ["*://developer.mozilla.org/*"],
      "matches": ["*://*.mozilla.org/*"],
      "js": ["jquery.js", "borderify.js"]
    }
  ]

Dies injiziert zwei Content-Skripte in alle Seiten unter mozilla.org oder einem seiner Subdomains, außer developer.mozilla.org, egal ob über HTTP oder HTTPS bereitgestellt.

Die Content-Skripte sehen denselben DOM-Ansicht und werden in der Reihenfolge injiziert, in der sie im Array erscheinen, sodass borderify.js globale Variablen sehen kann, die von jquery.js hinzugefügt wurden.

Browser-Kompatibilität